/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package test.cei.jpah2database;

import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.NonUniqueResultException;
import javax.persistence.Persistence;
import javax.persistence.Query;

/**
 *
 * @author Francisco
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("jpa-h2databasePU");
        EntityManager em = factory.createEntityManager();

        em.getTransaction().begin();
        Persona p1 = new Persona();
        p1.setNombre("pepe");
        p1.setApellido("pepe");

        em.persist(p1);

        Persona p2 = new Persona();
        p2.setNombre("pepe1");
        p2.setApellido("pepe1");

        em.persist(p2);
        
        if (p1.getContactos() == null) {
            p1.setContactos(new ArrayList<Contacto>(1));
        }
        p1.getContactos().add(p2);

        
        em.getTransaction().commit();

        Persona p3 = (Persona) em.createNamedQuery("Persona.buscarPorNombre").setParameter("nombre", "pepe").getSingleResult();
        for (Contacto c : p3.getContactos()) {
            System.out.println(c.getNombre());
        }
        
        Persona p4 = (Persona) em.createNamedQuery("Persona.buscarPorNombre").setParameter("nombre", p2.getNombre()).getSingleResult();
        for (Contacto c : p4.getContactos()) {
            System.out.println(c.getNombre());
        }
//        List<Persona> lista = em.createQuery("SELECT p FROM Persona p").getResultList();
//
//        System.out.println(lista.size());
//        em.merge(p);
//
//        Persona persona = em.find(Persona.class, 1); /*"", new PK(1,1) */
//
//        try {
//            persona = (Persona) em.createNamedQuery("buscarPersonaPorId").setParameter("idPersona", 0).getSingleResult();
//
//            persona = (Persona) em.createNamedQuery("buscarPersonaPorNombre").setParameter("nombre", "pepeN").getSingleResult();
//        } catch (NonUniqueResultException e) {
//            e.printStackTrace();
//        }
//
//        em.remove(p);
//
//        System.out.println(persona);
    }
}
